package com.winchain.provider.expiration.service;

import com.shell.bee.persistence.model.PageLimit;
import com.shell.bee.persistence.service.PersistentService;
import com.winchain.chainbill.bill.base.po.CbDfrl;
import com.winchain.chainbill.bill.base.po.CbRec;
import com.winchain.provider.expiration.po.CbCredit;
import com.winchain.provider.expiration.po.CbDebit;
import com.winchain.provider.expiration.vo.BatchStats;
import com.winchain.provider.expiration.vo.CbCreditQueryVo;
import com.winchain.provider.expiration.vo.CbCreditVo;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public abstract interface CbCreditService extends PersistentService<CbCredit> {
	public abstract CbCredit saveBillCredit(CbDebit paramCbDebit, CbRec paramCbRec, String paramString);

	public abstract CbCredit saveCbCredit(CbDebit paramCbDebit, CbRec paramCbRec, CbDfrl paramCbDfrl,
			String paramString);

	public abstract int updateCreditState(String paramString, List<String> paramList);

	public abstract CbCredit lockByKey(String paramString);

	public abstract Map<String, String> pmt(CbCredit paramCbCredit, String paramString);

	public abstract String trdQuota(CbCredit paramCbCredit);

	public abstract void sendExpCreditMessage(String paramString, List<CbCredit> paramList);

	public abstract void sendExpCreditFailedMessage(CbCredit paramCbCredit);

	public abstract List<CbCredit> getBillCredits(String paramString1, String paramString2, String paramString3,
			String paramString4);

	public abstract boolean creditByDebitId(String paramString);

	public abstract Map<String, String> creditById(String paramString1, boolean paramBoolean, String paramString2);

	public abstract List<CbCreditVo> selectCreditAbnormalList(PageLimit paramPageLimit,
			CbCreditQueryVo paramCbCreditQueryVo);

	public abstract BatchStats<String> reCredit(String... paramVarArgs);

	public abstract List<CbCreditVo> selectCreditList(PageLimit paramPageLimit, CbCreditQueryVo paramCbCreditQueryVo);

	public abstract List<CbCreditVo> selectDebitCreditList(PageLimit paramPageLimit,
			CbCreditQueryVo paramCbCreditQueryVo);

	public abstract BatchStats<String> confirmCredit(String... paramVarArgs);

	public abstract Map<String, BigDecimal> sumCreditStatsList(CbCreditQueryVo paramCbCreditQueryVo);

	public abstract boolean batchCreditByDebitId(String paramString1, String paramString2, boolean paramBoolean1,
			boolean paramBoolean2);
}
